/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.googlecode.oskis.library.date;
import java.text.ParseException;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
/**
 * Die Klasse NOW erweitert den GregorianCalendar und dient dazu schnell 
 * einen formatierten Datumstring des Tagesdatums zu erhalten (z.B. für SQL Statements)
 * 
 * @author thomas
 */
public class NOW extends GregorianCalendar {
    
    private SimpleDateFormat sdf;
    private Date date;
    public static final String defaultFormat="dd.MM.yyyy HH:mm:ss";
    
    /**
     * Initialisiert NOW mit dem aktuellen Tagesdatum<br>
     * und dem Default Format dd.MM.yyyy HH:mm:ss
     */
    public NOW() {
        super();
        sdf=new SimpleDateFormat(defaultFormat);
        date=new Date();
        this.setTime(date);
    }
    
    /**
     * Setzt den Formatierungsstring (siehe auch java.text.SimpleDateFormat)
     * @param format
     */
    public void setFormat(String format) {
        sdf=new SimpleDateFormat(format);
    }
    
    /**
     * 
     *
     * liefert das Datum als formatierten String
     */ 
    public String getFormattedDate() {
        return(sdf.format(date));
    }
    
    /**
     *  Liefert dat Datum in einer Repräsentation, mit der es direkt in eine 
     *  Datenbankabfrage eingebaut werden kann.
     */
    
    public String getDBRepresentation() {
        return("to_timestamp('"+sdf.format(date)+"','DD.MM.YYYY HH24:MI:SS')");
    }
    
    /** 
     * gleiche Funktion wie GregorianDate.add(), aktualisiert jedoch das intern geführte Date Objekt
     * @param key
     * @param value
     */
    public void add(int key,int value) {
        super.add(key, value);
        date=this.getTime();
    }

    public long getDiff(Date d) {
        return(this.getTimeInMillis()-d.getTime());
    }
    
    
    public long getDiff(String date,String format) throws java.text.ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat(format);
        Date d=sdf.parse(date);
        return getDiff(d);
    }
    
}
